package br.com.sistemasaude.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletRequest;

import br.com.sistemasaude.bean.Atendimento;
import br.com.sistemasaude.bean.Material;
import br.com.sistemasaude.bean.Medicamento;
import br.com.sistemasaude.bean.RelMedAtend;
import br.com.sistemasaude.dao.AtendimentoDAO;
import br.com.sistemasaude.dao.AtendimentoDAOImpl;
import br.com.sistemasaude.dao.MedicamentoDAO;
import br.com.sistemasaude.dao.MedicamentoDAOImpl;
import br.com.sistemasaude.dao.RelMatAtendDAO;
import br.com.sistemasaude.dao.RelMatAtendDAOImpl;
import br.com.sistemasaude.dao.RelMedAtendDAO;
import br.com.sistemasaude.dao.RelMedAtendDAOImpl;

public class RelMedicamentoAtendController {
	
	private List<SelectItem> listaMedicamento = new ArrayList<SelectItem>();
	private String medicamento;
	private int quantidade;
	private int idAtendimento;
	private List<Medicamento> medicamentoUtilizado = new ArrayList<Medicamento>();
	
	public RelMedicamentoAtendController(){
		preecheComboMedicamento();
	}
	
	public void preecheComboMedicamento(){
	
		MedicamentoDAO medicamentoDAO = new MedicamentoDAOImpl();
		List<Medicamento> listMedicamento = medicamentoDAO.listar();
		/*lista de Produtos*/
		List<SelectItem> medicamentos = new ArrayList<SelectItem>();

		for(Medicamento medicamento : listMedicamento){			
			listaMedicamento.add(new SelectItem(medicamento.getDescricao()));
		}
	}
	
	public String salvar(){
		FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest)context.getExternalContext().getRequest();
        String agend;
        if(request.getParameter("id_atendimento")!=null){
        	 agend = request.getParameter("id_atendimento").toString();
        	 this.idAtendimento = Integer.parseInt(agend);
        }
        
        Atendimento atend;
        
        AtendimentoDAO atendimentoDAO = new AtendimentoDAOImpl();
        atend = atendimentoDAO.buscar(idAtendimento);
        
		Medicamento med;
		MedicamentoDAO medicamentoDAO = new MedicamentoDAOImpl();
		med = medicamentoDAO.localizaMedicamento(this.medicamento);
		
		if(med.getQuantidade()>0){
		
		RelMedAtend relMedAtend = new RelMedAtend();
		relMedAtend.setQuantidade(this.quantidade);
		relMedAtend.setTbAtendimento(atend);
		relMedAtend.setTbMedicamento(med);
		
		RelMedAtendDAO relMedAtendDAO = new RelMedAtendDAOImpl();
		relMedAtendDAO.salvar(relMedAtend);
		
		//Atualizar o estoque de medicamento
		medicamentoDAO = new MedicamentoDAOImpl();
		med.setQuantidade((med.getQuantidade() - this.quantidade));
        medicamentoDAO.update(med);
        
        preencheMedicamentoUsado();
		
		}
		return "";
	}
	
	public void preencheMedicamentoUsado(){
		 RelMedAtendDAO relMedAtendDAO = new RelMedAtendDAOImpl();
		 AtendimentoDAO atendimentoDAO = new AtendimentoDAOImpl();
		 Atendimento anted = atendimentoDAO.buscar(this.idAtendimento);
		 if(anted!=null){
			 medicamentoUtilizado = relMedAtendDAO.retornaMedicamentos(anted);
		 }
	}

	public List<SelectItem> getListaMedicamento() {
		return listaMedicamento;
	}

	public void setListaMedicamento(List<SelectItem> listaMedicamento) {
		this.listaMedicamento = listaMedicamento;
	}

	public String getMedicamento() {
		return medicamento;
	}

	public void setMedicamento(String medicamento) {
		this.medicamento = medicamento;
	}

	public int getQuantidade() {
		return quantidade;
	}

	public List<Medicamento> getMedicamentoUtilizado() {
		return medicamentoUtilizado;
	}

	public void setMedicamentoUtilizado(List<Medicamento> medicamentoUtilizado) {
		this.medicamentoUtilizado = medicamentoUtilizado;
	}

	public void setQuantidade(int quantidade) {
		this.quantidade = quantidade;
	}

	public int getIdAtendimento() {
		return idAtendimento;
	}

	public void setIdAtendimento(int idAtendimento) {
		this.idAtendimento = idAtendimento;
	}

}
